﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ProjetAGL
{
    public partial class Jeu : Form
    {
        char[] tableau = new char[6];
        char[] tab = new char[6];
        private int nbreLettres;
        private int duree;
        private Joueur joueurEnCours;
        
        Winner win = new Winner();
        Pioche a = new Pioche();
        Assignation ass = new Assignation();

        public Jeu(Joueur param_joueurEnCours)
        {

                InitializeComponent();

                this.joueurEnCours = param_joueurEnCours;
                this.duree = joueurEnCours.getNiveau(joueurEnCours.NiveauChoisi).Durée;
                this.nbreLettres = joueurEnCours.getNiveau(joueurEnCours.NiveauChoisi).NbLettres;

                lblBienvenuJeu.Text += " " + joueurEnCours.NomJoueur;
                lblScore.Text += joueurEnCours.DernierScore;

                tab = ass.assignation(lblLettre1, lblLettre2, lblLettre3, lblLettre4, lblLettre5, lblLettre6);
        }

        private void Jeu_Load(object sender, EventArgs e)
        {           
            chronometre.Enabled = true;
            chronometre.Start();
            chronometre_Tick(sender, e);
        }
        private void chronometre_Tick(object sender, EventArgs e)
        {

            int mm;
            int ss;

            duree--;
            mm = duree / 60;
            ss = duree % 60;

            lblChrono.Text = mm.ToString("00") + " minute(s) " + ss.ToString("00") + " seconde(s)";
 
            if (duree == 0)
            {
                chronometre.Stop();
                if (MessageBox.Show("Vous avez perdu, voulez vous recommencer?", "Temps écoulé", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                   this.Show();                  
                }
                else
                {
                    this.Close();  
                }
            }
        }

        private void btnValider_Click(object sender, EventArgs e)
        {
            Search b = new Search();
            String mot = txtBoxMot.Text;
            Score score = new Score();

            Boolean Maybe = b.voisin(mot);
            if (Maybe == true)
            {
                MessageBox.Show("Bravo !");
                joueurEnCours.DernierScore = joueurEnCours.DernierScore + mot.Length;
                txtBoxMot.Text = "";

                if (win.winner(joueurEnCours))
                    this.Close();

                tab = ass.assignation(lblLettre1, lblLettre2, lblLettre3, lblLettre4, lblLettre5, lblLettre6);
                lblScore.Text = joueurEnCours.DernierScore.ToString();            
            }
                
            else
            {
                txtBoxMot.Text = "";
                MessageBox.Show("le mot n'existe pas");
            }                 
        }
        private void txtBoxMot_KeyPress(object sender, KeyPressEventArgs e)
        {
            int Z = 1;
            e.KeyChar = char.ToUpper(e.KeyChar);
            char c = e.KeyChar;

            for (int j = 0; j < 6; j++)
            {
                if (tab[j] == c)
                {
                    Z = 0;
                    break;
                }
            }
            if (e.KeyChar == (char)Keys.Delete || e.KeyChar == (char)Keys.Back)
                Z = 0;
            if (Z == 1)
            {
                e.Handled = true;
                MessageBox.Show("La lettre n'est pas comprise dans la pioche");
                Z = 0;
            }
        }
    }
}
